A computer system may be equipped with a universal serial bus (USB). USB ports allow USB-enabled devices to connect and communicate with the computer system. Examples of electronic devices that communicate with computer systems through USB ports include digital cameras, keyboards, hard drives, and printers.
A USB host is in charge of the USB bus in a computer system. The USB host is a collection of software and hardware inside the computer system that supports the USB bus. The USB host is typically responsible for identifying devices that are connected to a USB port. The USB host may then load any needed device drivers dynamically. Finally, the USB host may periodically poll each of the attached devices for data communications.
Typically, USB host controllers have conflicts with platform power saving states on a mobile system due to the USB controller's reliance on a main memory for much of its operating state, frequent accesses to the main memory even during periods of idleness, poll-based model for device interrupt generation, and other mobile-unfriendly behavior.